package com.sdp.irrigation.server.utils;

import java.io.IOException;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class FtpTest {
	
	// 递归列出文件和目录
    private static void listFilesAndDirectories(FTPClient ftpClient, String path) throws IOException {
        FTPFile[] files = ftpClient.listFiles(path);
        
        for (FTPFile file : files) {
            if (file.isDirectory()) {
                System.out.println("目录: " + path + file.getName());
                // 递归列出子目录中的文件和目录
                listFilesAndDirectories(ftpClient, path + file.getName() + "/");
            } else {
                System.out.println("文件: " + path + file.getName());
            }
        }
    }

	public static void main(String[] args) {
		FTPClient ftpClient = new FTPClient();
        String server = "110.41.14.225"; // 替换为 FTP 服务器的外网 IP 地址
        int port = 21; // 默认 FTP 端口是 21
        String username = "administrator"; // 替换为 FTP 用户名
        String password = "[xiertai2025N@.]"; // 替换为 FTP 密码

        try {
            // 连接到 FTP 服务器
            ftpClient.connect(server, port);
            boolean login = ftpClient.login(username, password);

            if (login) {
                // 设置文件传输类型为二进制，适用于所有文件类型
                ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
             // 获取文件夹内容，或者进行其他操作
                System.out.println("Connected to FTP server.");
                
                // 列出根目录下的文件和文件夹
                listFilesAndDirectories(ftpClient, "/");

                
                // 执行其他 FTP 操作，如下载、上传等

                // 退出
                ftpClient.logout();
            } else {
                System.out.println("FTP login failed.");
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
	}
}
